<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        const str = '前端,java,php,python,后端'
        // 定义正则对象
        const reg = /前端/
        // 1.正则对象.test(要检校的字符串) 返回值true|false
        console.log(reg.test(str));
        // 2.正则对象.exec(要提取的字符串) 有 数组,没有NULL
        console.log(reg.exec(str)[0]);
        // 3.边界符 ^是前 $是后,必须要以它开头或者结尾
        console.log(/^你/.test('你还是好'));  // true
        console.log(/^好/.test('你还是好'));  // false
        console.log(/好$/.test('你还是好'));  // true
        console.log(/你$/.test('你还是好'));  // false
        console.log(/^你好$/.test('你好'));  // true

        // 4.量词
        // {n}  重复n次 
        console.log(/操{1}/.test('操操操操操操')); //true
        // {n,} 重复n次或更多
        console.log(/^操{9,}$/.test('操操操操操操操操操')); //false
        // {n,m} 重复n到m次
        console.log(/操{1,9}/.test('操操操操操操操操操操操操操操操操')); //true

        // * / + / ?
        // * 表示0次或者更多
        console.log(/^龙*$/.test('')); //true
        // + 表示 大于等于1
        console.log(/^龙+$/.test('')); //flase
        // ? 表示 0次或者1次
        console.log(/^龙?$/.test('')); //true

        // 5. [字符] 表示匹配里面的一个字符即可
        console.log(/^[abc]/.test('andy')); //true
        console.log(/^[abc]/.test('yyds')); //true

        // 6.连字符
        const aar = /^[a-zA-Z0-9_]{3,16}$/
        console.log(arr.test('7454yy'))  //true

        // 7.取反
        const arr2 = /[^a-z]/
        console.log(arr2.test('66'));  // true

        // 正则表达式的简写化
        // \d  匹配0-9之间的任一数字
        // \D  匹配所有0- 9 以外的字符
        // \w  匹配任一的字母、数字和下划线
        // \W  除所有的字母、数字和下划线以外的字符
        // \s  匹配空格（包含换行符、制表符、空格符）
        // \S  匹配非空格的字符
        // /./ 换行
        // g = gLobal  全局，所有
        // i = ignore 忽略
        // replace() 替换
    </script>
</body>

</html>